home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ahoy 1984 January to June
/
Ahoy_Magazine_84-Jan-Jun_1984_Double_L.d64
/
interrupt music
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
19KB
|
513 lines
0 rem--ahoy--jan issue--interrupt music--prog page 21
1 remnants of my old piano... (c) 1983 by pete lobl river city, u.s.a.
4 onqqgoto50
5 poke52,89:poke56,89:clr:h=1:poke53280,0:poke53281,0
7 printchr$(8):gosub10000:i=-rnd(ti)
8 print"want to reset the clocks?(y/n)";:gosub5310:ifleft$(in$,1)<>"y"then20
9 fori=56331to56238step-1:pokei,0:next:fori=56587to56584step-1:pokei,0:next
20 a=peek(56328):b=peek(56584):print"please wait, reading in data..."
21 dimo1%(12),o2%(12),o3%(12),o4%(12),o5%(12),o6%(12),o7%(12),o8(12)
23 dimn$(15):fori=1to15:readn$(i):next
24 diml$(5):fori=1to5:readl$(i):next
25 dimns$(12):fori=1to12:readns$(i):next
26 dimnf$(12):fori=1to12:readnf$(i):next
27 dimnu(15):fori=1to15:readnu(i):next
28 fori=54272to54296:pokei,0:next
30 fori=1to12:reado1%(i):next
31 fori=1to12:reado2%(i):next
32 fori=1to12:reado3%(i):next
33 fori=1to12:reado4%(i):next
34 fori=1to12:reado5%(i):next
35 fori=1to12:reado6%(i):next
36 fori=1to12:reado7%(i):next
37 fori=1to12:reado8(i):next
40 v1=6*4096-1:v2=8*4096-1:t=0:o=5:n=1:f1=8192:f2=f1:v=1:b1=v:b2=v:a1=0:a2=a1
41 sy=5*4096+10*256+48:ys=5*4096+10*256+48+11:n2=n:sp=57:c1=23124:c2=c1+41
42 s$="short ":l$="tied ":l$(0)="length =":q$=""
45 o2=o:t2=t:n2=n
47 fori=22784to23205:reada:pokei,a:next
50 ifv=2 then240
51 print"[147]blocks free";int(f1/3);" : :";
52 print" voice 1":sysc1
53 print"position"tab(16)n;tab(22)n+1;tab(28)n+2
55 print"values"tab(16)peek(n+v1)" "peek(n+v1+1)" "peek(n+v1+2)
58 print"meaning"tab(10);:a=peek(n+v1):b=peek(n+v1+1):c=peek(n+v1+2)
60 ifa=0thenprint"at/dec ="b"sus/rel ="c:goto100
63 j=0:fori=1to15:ifa=nu(i)thenj=i
64 next:ifj=0thenprintl$(0)a;:goto80
66 z=int(j/3):y=j-z*3:ifythenz=z+1
67 ify=1thenprints$;
68 ify=0thenprintl$;
69 printl$(z)" ";
80 j=b*256+c:fori=1to12:ifj=o1%(i)thena=1:b=i:goto90
82 ifj=o2%(i)thena=2:b=i:goto90
83 ifj=o3%(i)thena=3:b=i:goto90
84 ifj=o4%(i)thena=4:b=i:goto90
85 ifj=o5%(i)thena=5:b=i:goto90
86 ifj=o6%(i)thena=6:b=i:goto90
87 ifj=o7%(i)thena=7:b=i:goto90
88 ifj=o8(i)thena=8:b=i:goto90
89 next:ifj>0thenprint" ? note":goto100
90 i=13:ifj=0thenprint" rest":goto100
92 next:printa;:in$=ns$(b):a$=nf$(b):ifa$=in$thenprinta$:goto100
94 printin$" ("a$")"
100 print""
102 print"l[146]=load s[146]=save g[146]=goto n[146]=next b[146]=back"
104 print"c[146]=change p[146]=play t[146]=transfer f[146]=find ?[146]=dump"
105 print"h[146]=help z[146]=speed v[146]=volume e[146]=edit"
106 print"current block ="b1
108 print"octave "o" tempo "t" speed "sp
110 a$="":print"input : ";:h=.:gosub5310:h=1:a$=in$
111 ifleft$(a$,1)="h"ora$="*h"thengosub7000:goto50
112 ifleft$(a$,1)="*"then141
113 a=val(left$(a$,1)):ifathengosub422:o=a:goto116
114 b$=left$(a$,2):ifright$(b$,1)=" "thenb$=left$(b$,1)
115 goto117
116 b$=mid$(a$,2,2):ifright$(b$,1)=" "thenb$=left$(b$,1)
117 j=0:fori=1to12:ifb$=ns$(i)thenj=i
118 next:ifjthen122
119 j=0:fori=1to12:ifb$=nf$(i)thenj=i
120 next:ifjthen122
121 goto402
122 onogosub400,410,420,430,440,450,460,470
123 b=int(a/256):c=a-b*256:pokev1+n+1,b:pokev1+n+2,c
124 j=o:fori=1tolen(a$):ifmid$(a$,i,1)=" "thenj=i
125 next:a$=right$(a$,len(a$)-j):j=0:fori=1to15:ifa$=n$(i)thenj=i
126 next:ifj=0thend=val(a$):goto128
127 d=nu(j):goto130
128 ifd>255thenprintq$;"duration too large !!":gosub8000:goto50
129 ifd<=0thenprintq$;"duration can't be less than 1 !!":gosub8000:goto50
130 d=d+t:ifd>255ord<=0then128
131 poken+v1,d:b1=b1+1:n=n+3:f1=f1-3
132 iff1<1thenprintq$"all blocks full for voice 1":gosub8000:goto426
133 ifright$(a$,1)="h"orright$(a$,2)="h "then461
134 ifval(a$)then138
135 ifright$(a$,1)="s"orright$(a$,2)="s "then471
136 poken+v1,1:poken+v1+1,0:poken+v1+2,0:goto140
137 poken+v1+2,0:goto140
138 ifa1=0then50
139 poken+v1,a1:poken+v1+1,0:goto137
140 b1=b1+1:n=n+3:f1=f1-3:goto424
141 a$=right$(a$,1):ifa$<>"g"then144
142 printq$"to what block ? ";:gosub5310:j=val(in$):ifj>2830orj<1then50
143 b1=j:f1=8193-b1*3:n=b1*3-2:goto50
144 ifa$<>"n"then147
145 j=b1:j=j+1:ifj<2831then143
146 goto50
147 ifa$<>"b"then150
148 j=b1:j=j-1:ifj>0then143
149 goto50
150 ifa$<>"l"then152
151 goto4000
152 ifa$<>"p"then165
153 ifp=1thensys5*4096+9*256+15*16+10:poke54296,0:p=0:goto50
154 print"[147]which voices do you want ? (1/2/b) ";:gosub5310:a$=in$
155 qq=5*4096+9*256:ifa$="2"thenpokeqq+68,0:pokeqq+109,0:pokeqq+21,0:goto160
156 print"what waveform for voice 1 ? (t/s/p/n) ";:gosub5310:a1=1:gosub433
157 pokeqq+68,wv:pokeqq+109,wv:pokeqq+21,wv-1
158 print"what block does it start at ? ";:gosub5310:vv=1:gosub452
159 ifa$="1"thensysqq+12*16:p=1:pokeqq+114,0:pokeqq+85,0:goto50
160 print"what waveform for voice 2 ? (t/s/p/n) ";:gosub5310:a1=2:gosub433
161 pokeqq+114,wv:pokeqq+85,wv-1
162 print"what block does it start at ? ";:gosub5310:vv=2:gosub452
163 sysqq+12*16:p=1:goto50
165 ifa$<>"c"then185
166 print"[147]your choice ? (v/t/dsr/au/ti/fs/x) ";:gosub5310:ifin$="x"then50
167 ifin$="t"thenprint"tempo ";:gosub5310:t=val(in$):goto166
168 ifin$="dsr"thenprint"attack/decay ? ";:gosub5310:a=val(in$):goto170
169 goto172
170 print"sustain/release ? ";:gosub5310:sr=val(in$):ifa>255orsr>255then166
171 poken+v1,0:poken+v1+1,a:poken+v1+2,sr:b1=b1+1:n=n+3:f1=f1-3:goto166
172 ifin$="v"thenv=v+1:v=v+2*(v=3):goto166
173 ifin$="au"thenprint"your new seperation ? ";:gosub5310:a1=val(in$):goto166
174 ifin$<>"fs"then473
175 print"[147]starting block ";:gosub5310:a=val(in$):print"ending block ";:gosub5310
176 j=val(in$)-a:ifa<1then166
177 print"slower or faster ? (s/f) ";:gosub5310:ifin$="s"thenr=2:k=1:goto179
178 r=.5:k=0
179 qq=6*4096+a*3-3:fori=qqtoqq+j*3step3:ifpeek(i)<2then182
180 a=int(peek(i)*r)+k:ifa>255thena=255
181 pokei,a
182 next:goto166
185 ifa$<>"t"then195
186 print"[147]begining block ";:gosub5310:a=val(in$):print"ending block ";:gosub5310
187 b=val(in$):print"origin voice ";:gosub5310:c=val(in$):j=b-a:ifj<1then50
188 print"destination block ";:gosub5310:b=val(in$):print"ending voice ";:gosub5310
189 r=val(in$):ifc=1thenqq=6*4096:goto191
190 qq=8*4096
191 r=8*4096:ifr=1thenr=6*4096
193 fori=qq+a*3-3toqq+a*3-3+j*3+2:poker+b*3-3,peek(i):r=r+1:next
194 goto50
195 ifa$<>"x"then197
196 sys5*4096+9*256+15*16+10:poke54296,0:p=0:printq$chr$(9)"[145][145]":goto20000
197 ifa$<>"s"then210
198 print"[147]starting block ";:gosub5310:a=val(in$):print"ending block ";:gosub5310
199 b=val(in$):print"voice ";:gosub5310:c=val(in$):ifb-a<1then50
200 ifc=1orc=2then202
201 goto50
202 qq=8*4096:ifc=1thenqq=6*4096
204 r=qq+a*3-3:qq=r+b*3:lo=12*4096+22:pokelo+1,int(r/256)
205 pokelo,r-(int(r/256))*256:pokelo+3,int(qq/256):pokelo+2,qq-(int(qq/256))*256
206 print"file name ? ";:gosub5310:lo=lo-16:iflen(in$)=0thendv=1:goto208
207 fori=1tolen(in$):pokelo+i-1,asc(mid$(in$,i,1)):next:dv=1
208 pokelo-1,len(in$):print"disk or tape?";:gosub5310:ifleft$(in$,1)="d"thendv=8
209 poke5*4096+10*256+10,dv:sys5*4096+10*256+7:goto50
210 ifa$<>"f"then230
211 print"[147]starting block ";:gosub5310:a=val(in$):print"ending block ";:gosub5310
212 b=val(in$):b=b-a:ifb<1then50
213 print"voice ";:gosub5310:c=val(in$):ifc=1thenc=6*4096:goto215
214 c=8*4096
215 qw=c:a=c+a*3-3:lo=12*4096+32-1:c=1
216 print"member"c;:gosub5310;:ifval(in$)=0then220
217 ifval(in$)<0orval(in$)>255then216
218 pokec+lo,val(in$):c=c+1:goto216
220 c=c-1:print"searching for ";:fori=1toc:printpeek(lo+i);:next:print
221 foi=atoa+b*3:forj=1toc:ifpeek(i+j-1)=peek(lo+j)thennext:goto223
222 j=c+1:next:goto224
223 qq=(int((i-qw)/3))+1:print"block"qq"position"qq*3-(int((i-qw)/(qq*3))+1)
224 next:print"hit a key to continue."
225 getr$:ifr$=""then225
226 goto50
230 ifa$<>"e"then500
231 printq$"what position ";:gosub5310:a=val(in$):print"what value ";:gosub5310
232 b=val(in$):ifb>255ora<0then50
233 poke6*4096+a-1,b:goto50
240 print"[147]blocks free";int(f2/3);" : :";
242 print" voice 2":sysc2
243 print"position"tab(16)n2;tab(22)n2+1;tab(28)n2+2
245 print"values"tab(16)peek(n2+v2)" "peek(n2+v2+1)" "peek(n2+v2+2)
248 print"meaning"tab(10);:a=peek(n2+v2):b=peek(n2+v2+1):c=peek(n2+v2+2)
250 ifa=0thenprint"at/dec ="b"sus/rel ="c:goto280
253 j=0:fori=1to15:ifa=nu(i)thenj=i
254 next:ifj=0thenprintl$(0)a;:goto260
256 z=int(j/3):y=j-z*3:ifythenz=z+1
257 ify=1thenprints$;
258 ify=0thenprintl$;
259 printl$(z)" ";
260 rem
261 j=b*256+c:fori=1to12:ifj=o1%(i)thena=1:b=i:goto270
262 ifj=o2%(i)thena=2:b=i:goto270
263 ifj=o3%(i)thena=3:b=i:goto270
264 ifj=o4%(i)thena=4:b=i:goto270
265 ifj=o5%(i)thena=5:b=i:goto270
266 ifj=o6%(i)thena=6:b=i:goto270
267 ifj=o7%(i)thena=7:b=i:goto270
268 ifj=o8(i)thena=8:b=i:goto270
269 next:ifj>0thenprint" ? note":goto280
270 i=13:ifj=0thenprint" rest":goto280
272 next:printa;:in$=ns$(b):a$=nf$(b):ifa$=in$thenprinta$:goto280
274 printin$" ("a$")"
280 print""
282 print"l[146]=load s[146]=save g[146]=goto n[146]=next b[146]=back e[146]=edt";
284 print"c[146]=change p[146]=play t[146]=transfer f[146]=find ?[146]=dump"
285 print"h[146]=help z[146]=speed v[146]=volume e[146]=edit"
286 print"current block ="b2
288 print"octave "o2" tempo "t2" speed "sp
290 a$="":print"input : ";:h=.:gosub5310:h=1:a$=in$
291 ifleft$(a$,1)="h"ora$="*h"thengosub7000:goto50
292 ifleft$(a$,1)="*"then321
293 a=val(left$(a$,1)):ifathengosub422:o2=a:goto296
294 b$=left$(a$,2):ifright$(b$,1)=" "thenb$=left$(b$,1)
295 goto297
296 b$=mid$(a$,2,2):ifright$(b$,1)=" "thenb$=left$(b$,1)
297 j=0:fori=1to12:ifb$=ns$(i)thenj=i
298 next:ifjthen302
299 j=0:fori=1to12:ifb$=nf$(i)thenj=i
300 next:ifjthen302
301 goto1402
302 ono2gosub400,410,420,430,440,450,460,470
303 b=int(a/256):c=a-b*256:pokev2+n2+1,b:pokev2+n2+2,c
304 j=0:fori=1tolen(a$):ifmid$(a$,i,1)=" "thenj=i
305 next:a$=right$(a$,len(a$)-j):j=0:fori=1to15:ifa$=n$(i)thenj=i
306 next:ifj=0thend=val(a$):goto308
307 d=nu(j):goto310
308 ifd>255thenprintq$;"duration too large !!":gosub8000:goto50
309 ifd<=0thenprintq$;"duration can't be less than 1 !!":gosub8000:goto50
310 d=d+t2:ifd>255ord<=0then308
311 poken2+v2,d:b2=b2+1:n2=n2+3:f2=f2-3
312 iff2<1thenprintq$"all blocks full for voice 1":gosub8000:goto1426
313 ifright$(a$,1)="h"orright$(a$,2)="h "then1461
314 ifval(a$)then318
315 ifright$(a$,1)="s"orright$(a$,2)="s "then1471
316 poken2+v2,1:poken2+v2+1,0:poken2+v2+2,0:goto320
317 poken2+v2+2,0:goto320
318 ifa2=0then50
319 poken2+v2,a2:poken2+v2+1,0:goto317
320 b2=b2+1:n2=n2+3:f2=f2-3:goto1424
321 a$=right$(a$,1):ifa$<>"g"then324
322 printq$"to what block ? ";:gosub5310:j=val(in$):ifj>2830orj<1then50
323 b2=j:f2=8193-b2*3:n2=b2*3-2:goto50
324 ifa$<>"n"then327
325 j=b2:j=j+1:ifj<2831then323
326 goto50
327 ifa$<>"b"then330
328 j=b2:j=j-1:ifj>0then323
329 goto50
330 ifa$<>"l"then332
331 goto4000
332 ifa$<>"p"then345
333 ifp=1thensys5*4096+9*256+15*16+10:poke54296,0:p=0:goto50
334 print"[147]which voices do you want ? (1/2/b) ";:gosub5310:a$=in$
335 qq=5*4096+9*256:ifa$="2"thenpokeqq+68,0:pokeqq+109,0:pokeqq+21,0:goto340
336 print"what waveform for voice 1 ? (t/s/p/n) ";:gosub5310:a1=1:gosub433
337 pokeqq+68,wv:pokeqq+109,wv:pokeqq+21,wv-1
338 print"what block does it start at ? ";:gosub5310:vv=1:gosub452
339 ifa$="1"thensysqq+12*16:p=1:pokeqq+114,0:pokeqq+85,0:goto50
340 print"what waveform for voice 2 ? (t/s/p/n) ";:gosub5310:a1=2:gosub433
341 pokeqq+114,wv:pokeqq+85,wv-1
342 print"what block does it start at ? ";:gosub5310:vv=2:gosub452
343 sysqq+12*16:p=1:goto50
345 ifa$<>"c"then365
346 print"[147]your choice ? (v/t/dsr/au/ti/fs/x) ";:gosub5310:ifin$="x"then50
347 ifin$="t"thenprint"tempo";:gosub5310:t2=val(in$):goto346
348 ifin$="dsr"thenprint"attack/decay ? ";:gosub5310:a=val(in$):goto350
349 goto352
350 print"sustain/release ? ";:gosub5310:sr=val(in$):ifa>255orsr>255then346
351 poken2+v2,0:poken2+v2+1,a:poken2+v2+2,sr:b2=b2+1:n2=n2+3:f2=f2-3:goto346
352 ifin$="v"thenv=v+1:v=v+2*(v=3):goto346
353 ifin$="au"thenprint"your new seperatioin ? ";:gosub5310:a2=val(in$):goto346
354 ifin$<>"fs"then1473
355 print"[147]starting block ";:gosub5310:a=val(in$):print"ending block ";:gosub5310
356 j=val(in$)-a:ifa<1then346
357 print"slower or faster ? (s/f) ";:gosub5310:ifin$="s"thenr=2:k=1:goto359
358 r=.5:k=0
359 qq=8*4096+a*3-3:fori=qqtoqq+j*3step3:ifpeek(i)<2then362
360 a=int(peek(i)*r)+k:ifa>255thena=255
361 pokei,a
362 next:goto346
365 ifa$<>"t"then375
366 print"[147]beginning block ";:gosub5310:a=val(in$):print"ending block ";:gosub5310
367 b=val(in$):print"origin voice ";:gosub5310:c=val(in$):j=b-a:ifj<1then50
368 print"destination block ";:gosub5310:b=val(in$):print"ending voice ";:gosub5310
369 r=val(in$):ifc=1thenqq=6*4096:goto191
370 qq=8*4096
371 ifr=1thenr=6*4096:goto193
372 r=8*4096
373 fori=qq+a*3-3toqq+a*3-3+j*3+2:poker+b*3-3,peek(i):r=r+1:next
374 goto50
375 ifa$<>"x"then377
376 sys5*4096+9*256+15*16+10:poke54296,0:p=0:printq$chr$(9)"[145][145]":goto20000
377 ifa$="s"then198
390 ifa$<>"f"then2410
391 print"[147]starting block ";:gosub5310:a=val(in$):print"ending block ";:gosub5310
392 b=val(in$):b=b-a:ifb<1then50
393 print"voice ";:gosub5310:c=val(in$):ifc=1thenc=6*4096:goto395
394 c=8*4096
395 qw=c:a=c+a*3-3:lo=12*4096+32-1:c=1
396 print"member"c;:gosub5310;:ifval(in$)=0then2400
397 ifval(in$)<0orval(in$)>255then396
398 pokec+lo,val(in$):c=c+1:goto396
400 a=o1%(j):return
402 ifleft$(a$,1)="r"thena=0:goto123
403 printq$"improper note !!":gosub8000:goto50
410 a=o2%(j):return
420 a=o3%(j):return
422 ifa=9thena=8
423 return
424 iff1<0thenprintq$"all blocks full for voice 1":gosub8000:goto426
425 goto50
426 b1=b1-1:n=n-3:f1=f1+3:goto50
430 a=o4%(j):return
433 ifin$="s"thenwv=33:return
434 ifin$="n"thenwv=129:return
435 ifin$<>"p"then439
436 print"[147]low pulse (0-255) ?[160]";:gosub5310:a=val(in$):print"high pulse (0-15) ? ";
437 gosub5310:wv=65:b=val(in$):ifa<0ora>255thena=127
438 goto456
439 wv=17:return
440 a=o5%(j):return
450 a=o6%(j):return
452 lo=val(in$):iflo<1orlo>2730thenlo=1
453 ifvv=2then455
454 a=6*4096+(lo*3-3):pokeqq+216,a-(int(a/256))*256:pokeqq+255,int(a/256):return
455 a=8*4096+(lo*3-3):pokeqq+221,a-(int(a/256))*256:pokeqq+229,int(a/256):return
456 ifb<0orb>15thenb=7
457 ifa1=1thenpoke54274,a:poke54275,b:return
459 poke54281,a:poke54282,b:return
460 a=o7%(j):return
461 b$=right$(a$,2):ifleft$(b$,1)=" "ora$="h"then134
462 goto50
470 a=o8(j):return
471 b$=right$(a$,2):ifleft$(b$,1)=" "ora$="s"then136
472 poken+v1,2:poken+v1+1,0:goto137
473 ifin$<>"ti"then166
474 print"[147]clock 1 equal ";:gosub5310:ifval(in$)=0then480
475 a=len(in$):ifa>6orin$=""then166
476 ifa<>6thenfori=1to6-a:in$="0"+in$:next
477 te=val(left$(in$,1))*16+val(mid$(in$,2,1))*16:ifte<256thenpoke56331,te
478 te=val(mid$(in$,4,1))+val(mid$(in$,3,1))*16:ifte<256thenpoke56330,te
479 te=val(right$(in$,1))+val(mid$(in$,5,1))*16:ifte<256thenpoke56329,te:goto481
480 fori=56331to56329step-1:pokei,0:next
481 print"[147]clock 2 equal ";:gosub5310:ifval(in$)=0then490
482 a=len(in$):ifa>6orin$=""then50
483 ifa<>6thenfori=1to6-a:in$="0"+in$:next
484 te=val(left$(in$,1))*16+val(mid$(in$,2,1))*16:ifte<256thenpoke56587,te
485 te=val(mid$(in$,4,1))+val(mid$(in$,3,1))*16:ifte<256thenpoke56586,te
486 te=val(right$(in$,1))+val(mid$(in$,5,1))*16:poke56585,te:poke56584,0:poke56328,0:goto50
490 fori=56587to56584step-1:pokei,0:next:poke56328,0:goto50
500 ifa$="v"then550
505 ifa$="?"then49000
510 ifa$<>"z"then50
511 print"[147]new speed ? ";:gosub5310:a=val(in$):ifa<1ora>255then50
512 poke56325,a:sp=a:goto50
550 print"[147]filter voice 1?(y/n)";:gosub5310:vw=0:ifleft$(in$,1)="y"thenvw=1
552 print"filter voice 2 ? (y/n) ";:gosub5310:ifleft$(in$,1)="y"thenvw=vw+2
556 print"resonance? (0-15) ";:gosub5310:in=int(val(in$)):ifin<0orin>15thenin=0
558 poke54295,vw+in*16:print"[147]want hi-pass filter ? (y/n) ";:gosub5310
560 vw=0:ifleft$(in$,1)="y"thenvw=64
562 print"want band-pass filter? (y/n) ";:gosub5310:ifleft$(in$,1)="y"thenvw=vw+32
564 print"want low-pass filter ? (y/n) ";:gosub5310:ifleft$(in$,1)="y"thenvw=vw+16
566 print"what volume ? (0-15) ";:gosub5310:in=int(val(in$)):ifin<0orin>15thenin=7
568 in=vw+in:print"[147]what high setting ? (0-15) ";:gosub5310:vw=int(val(in$))
570 ifvw<0orvw>15thenvw=0
572 print"what low setting ? (0-255) ";:gosub5310:vw=int(val(in$))
574 ifvw<0orvw>255thenvw=0
576 poke54294,vw:poke54296,in:goto50
1000 datass,s,sh,es,e,eh,qs,q,qh,hs,h,hh,ws,w,wh,sixteenth,eighth,quarter,half
1001 datawhole
1005 datac,c#,d,d#,e,f,f#,g,g#,a,a#,b
1007 datac,db,d,eb,e,f,gb,g,ab,a,bb,b
1009 data6,7,8,14,15,16,30,31,32,62,63,64,126,127,128
1010 data268,284,301,318,337,358,379,401,425,451,477,506
1012 data536,568,602,637,675,716,758,803,851,902,955,1012
1014 data1072,1136,1204,1275,1351,1432,1517,1607,1703,1804,1911,2025
1016 data2145,2273,2408,2551,2703,2864,3034,3215,3406,3608,3823,4050
1018 data4291,4547,4817,5103,5407,5728,6069,6430,6812,7217,7647,8101
1020 data8583,9094,9634,10207,10814,11457,12139,12860,13625,14435,15294,16203
1022 data17167,18188,19269,20415,21629,22915,24278,25721,27251,28871,30588,32407
1024 data34334,36367,38539,40830,43258,45830,48556,51443,54502,57743,61776,64814
1200 data174,0,192,236,1,192,240,7,232,142,0,192,76,59,89,160,0,140
1201 data0,192,169,32,141,4,212,177,251,141,1,192,240,104,200,177,251,141
1202 data1,212,200,177,251,141,0,212,24,165,251,105,3,133,251,144,6,165
1203 data252,105,0,133,252,174,2,192,236,3,192,240,12,169,33,141,4,212
1204 data232,142,2,192,76,49,234,160,0,140,2,192,169,32,141,11,212,177
1205 data253,141,3,192,240,68,200,177,253,141,8,212,200,177,253,141,7,212
1206 data169,33,141,4,212,169,33,141,11,212,24,165,253,105,3,133,253,144
1207 data6,165,254,105,0,133,254,76,49,234,200,177,251,141,5,212,200,177
1208 data251,141,6,212,24,165,251,105,3,133,251,165,252,105,0,133,252,76
1209 data15,89,200,177,253,141,12,212,200,177,253,141,13,212,24,165,253,105
1210 data3,133,253,165,254,105,0,133,254,76,79,89,169,0,141,0,192,141
1211 data1,192,141,2,192,141,3,192,168,153,0,212,200,192,2,208,248,169
1212 data0,234,133,251,169,0,133,253,169,96,133,252,169,128,133,254,169,15
1213 data141,24,212,120,169,0,141,20,3,169,89,141,21,3,88,96,120,169
1214 data49,141,20,3,169,234,141,21,3,88,96,169,1,162,1,160,255,32
1215 data186,255,173,5,192,162,6,160,192,32,189,255,173,22,192,133,249,173
1216 data23,192,133,250,174,24,192,172,25,192,169,249,32,216,255,96,56,32
1217 data240,255,142,48,192,140,49,192,96,24,172,49,192,174,48,192,32,240
1218 data255,96,169,0,160,3,153,8,220,153,8,221,136,16,247,96,160,7
1219 data162,0,189,9,220,24,41,15,105,48,153,19,4,24,189,9,220,74
1220 data74,74,74,24,105,48,136,153,19,4,136,136,232,224,3,208,223,173
1221 data11,220,96,160,7,162,0,189,9,221,24,41,15,105,48,153,19,4
1222 data24,189,9,221,74,74,74,74,24,105,48,136,153,19,4,136,136,232
1223 data224,3,208,223,173,8,221,96
1402 ifleft$(a$,1)="r"thena=0:goto303
1403 printq$"improper not !!":gosub8000:goto50
1424 iff2<0thenprintq$"all blocks full for voice 1":gosub8000:goto426
1425 goto50
1426 b2=b2-1:n2=n2-3:f2=f2+3:goto50
1461 b$=right$(a$,2):ifleft$(b$,1)=" "ora$="h"then314
1462 goto50
1471 b$=right$(a$,2):ifleft$(b$,1)=" "ora$="s"then316
1472 poken2+v2,2:poken2+v2+1,0:goto317
1473 ifin$<>"ti"then346
1474 print"clock 1 equal ";:gosub5310:ifval(in$)=0then480
1475 a=len(in$):ifa>6orin$""then346
1476 goto476
2400 c=c-1:print"searching for ";:fori=1toc:printpeek(lo+i);:next:print
2401 fori=atoa+b*3:forj=1toc:ifpeek(i+j-1)=peek(lo+j)thennext:goto2403
2402 j=c+1:next:goto2404
2403 qq=(int((i-qw)/3))+1:print"block"qq"position"qq*3-(int((i-qw)/(qq*3))+1)
2404 next:print"hit a key to continue."
2405 getr$:ifr$=""then2405
2406 goto50
2410 ifa$<>"e"then500
2411 printq$"what position ";:gosub5310:a=val(in$):print"what value ";:gosub5310
2412 b=val(in$):ifb>255ora<0then50
2413 poke8*4096+a-1,b:goto50
4000 d=1:printq$"disk or tape ? (d/t) ";:gosub5310:ifleft$(in$,1)="d"thend=8
4005 printq$"name of file ? [157][157][157][157][157][157][157][157]";:gosub5310:qq=1:loadin$,d,1
5310 in$=" ":l=1:zd$=chr$(20):cr$=chr$(13):w=646:i=1:g=15:n$="[157]":x=3:b$="zqw*"
5320 getz$:ifz$<>""then5350
5321 ifhthen5330
5322 ifv=2thenq=f1:f1=f2:te=c1:c1=c2
5323 syssy:print"blocks free"int(f1/x)"::"
5324 sysys:sysc1
5325 ifv=2thenf1=q:c1=te
5330 pokew,int(rnd(.)*g)+i:printmid$(b$,l,i)n$;:l=(xandl)+i:goto5320
5350 zi=asc(z$):zl=len(in$):if(ziand127)<32thenprint" [157]";:goto5380
5360 ifzl>15then5320
5370 in$=in$+z$:printz$;zd$;z$;
5380 ifzi=13thenin$=mid$(in$,2):y$=left$(in$,1):printcr$;:return
5390 ifzi=20andzl>1thenin$=left$(in$,zl-1):print"[157]";:goto5320
5400 ifzi=133thenz$=chr$(-20*(zl>1)):forzi=2tozl:printz$;:nextzi:goto5310
5410 goto5320
7000 print"[147]complete command listing"
7001 print"########################"
7002 print"*s = saves a file to disk
7003 [153]"*l = loads a file from disk
7004 print"*g = goto a specified block (note)
7005 [153]"*n = goto next block (note)
7006 print"*b = goto previous block (note)
7007 [153]"*e = edit specific single value
7008 print"*c = alter one of many editor values
7009 [153]" v = voice t = tempo dsr = adsr vals"
7010 [153]" au = auto durations ti = set time"
7011 [153]" fs = faster/slower x = back to editor"
7012 [153]"hit 'f1' to continue...."
7013 [161]r$:[139]r$[178]""[167]7013
7014 [139]r$[179][177]"input"[167]50
7015 [153]"load*? = dump music listings to printer"
7017 [153]"*p = play one or both voices"
7018 [153]"*t = transfer sections of music"
7019 [153]"*f = find a certain number of values"
7020 [153]"*x = leave program and save ml
7021 print"*h = command listing
7022 [153]"*v = change sid-chip settings"
7023 [153]"*s = change speed setting"
7025 [153]"enter octave, note, a space, then
7026 print"duration to directly enter music.
7027 [153]"use a '*' only for a command.
7028 print"hit a key to continue.
7029 [161]r$:[139]r$[178]""[167]7029
7030 [137]50
8000 [129]i[178]1[164]2500:[130]:[142]
10000 [153]"load c-64 interrupt music maker/editor"
10002 [153]" version 1.09/01/83"
10003 [153]" by pete lobl"
10004 [129]i[178]1[164]1000:[130]:[151]198,0:[142]
20000 [153]"loadtape or disk ?(t/d) ";:[141]5310:dv[178]8:[139][200](in$,1)[178]"t"[167]dv[178]1
20204 r[178]22784:qq[178]23206:lo[178]12[172]4096[170]22:[151]lo[170]1,[181](r[173]256)
20205 [151]lo,r[171]([181](r[173]256))[172]256:[151]lo[170]3,[181](qq[173]256):[151]lo[170]2,qq[171]([181](qq[173]256))[172]256
20206 [153]"ml file name ? ";:[141]5310:lo[178]lo[171]16:[139][195](in$)[178]0[167]20208
20207 [129]i[178]1[164][195](in$):[151]lo[170]i[171]1,[198]([202](in$,i,1)):[130]
20208 [151]lo[171]1,[195](in$):[139][195](in$)[178]0[175]dv[178]8[167][153]"missing file name !!":[137]20300
20209 [151]5[172]4096[170]10[172]256[170]10,dv:[158]5[172]4096[170]10[172]256[170]7
20300 [153]"take it easy, hope you had fun !!":[128]
49000 [153]"loadwhat voice ? (1/2) ";:[141]5310:in[178][181]([197](in$)):[139]in[179]1[175]in[177]2[167]50
49010 tv[178]in:z[178]6[172]4096:[139]in[178]2[167]z[178]8[172]4096
49020 [153]"starting block? ";:[141]5310:in[178][181]([197](in$)):[139]in[179]0[175]in[177]1730[167]50
49030 bb[178]in
49040 vi[178]3[172]in:[153]"ending block?";:[141]5310:in[178][181]([197](in$)):[139]in[179]0[175]in[177]1730[167]50
49050 eb[178]in:en[178]3[172]in[170]z:z[178]vi[170]z:[139]z[177]en[167]50
49100 [159]4,4:[153]#4,[199](10)"interrupt music editor printout. (c) 1983 pete lobl"
49200 [152]4,[199](10)"voice"tv"beginning block"bb"ending block"eb
49210 [152]4,[199](10)
50000 a[178][194](z):b[178][194](z[170]1):c[178][194](z[170]2)
50020 [152]4,"block"bb;
50060 [139]a[178]0[167][152]4,"at/dec ="b"sus/rel ="c:[137]50100
50080 [152]4,"duration"a;
50081 j[178]b[172]256[170]c:[129]i[178]1[164]12:[139]j[178]o1%(i)[167]a[178]1:b[178]i:[137]50090
50082 [139]j[178]o2%(i)[167]a[178]2:b[178]i:[137]50090
50083 [139]j[178]o3%(i)[167]a[178]3:b[178]i:[137]50090
50084 [139]j[178]o4%(i)[167]a[178]4:b[178]i:[137]50090
50085 [139]j[178]o5%(i)[167]a[178]5:b[178]i:[137]50090
50086 [139]j[178]o6%(i)[167]a[178]6:b[178]i:[137]50090
50087 [139]j[178]o7%(i)[167]a[178]7:b[178]i:[137]50090
50088 [139]j[178]o8(i)[167]a[178]8:b[178]i:[137]50090
50089 [130]:[139]j[177]0[167][152]4," ? note":[137]50100
50090 i[178]13:[139]j[178]0[167][152]4," rest":[137]50100
50092 [130]:[152]4,a;:in$[178]ns$(b):a$[178]nf$(b):[139]a$[178]in$[167][152]4,a$:[137]50100
50094 [152]4,in$" ("a$")"
50100 bb[178]bb[170]1:[139]bb[177]eb[167][153]#4,[199](10)"printing complete."[199]10):[160]4:[137]50
50110 z[178]z[170]3:[137]50000